import face_recognition
from tool import insertFace, postInsertFace
import cv2

cap = cv2.VideoCapture(0)
# 开始一个循环，条件是摄像头成功打开。isOpened()方法检查视频捕捉对象是否初始化成功
while cap.isOpened():
    # 从摄像头读取一帧图像。如果读取成功，ret将为True，并且img变量包含捕获的帧；否则，ret为False
    ret, img = cap.read()
    if ret:
        # 在名为"capture"的窗口中显示当前帧
        cv2.imshow("capture", img)
        # 等待100毫秒获取键盘输入。如果在这段时间内没有按键被按下，则函数返回-1；如果有按键被按下，则返回按键的ASCII码
        key = cv2.waitKey(100)
        if key == ord("a") or key == ord("A"):
            # 将当前捕获的图像保存为文件"capture.jpg"
            unknown_image = img.copy()  # 直接使用当前捕获的图像
            face_encodings_list = face_recognition.face_encodings(unknown_image)
            if not face_encodings_list:
                print(f"警告: 未检测到人脸")
                continue  # 或者采取其他行动，如跳过该文件或记录错误日志
            unknown_encoding = face_encodings_list[0]
            name = input("请输入识别出的人的名字: ")
            # insertFace(name, unknown_encoding)
            postInsertFace(name, unknown_encoding)
            break
# 释放视频捕捉对象，关闭摄像头
cap.release()
cv2.destroyAllWindows()
